import sys
input = sys.stdin.readline
inf = float('inf')
def getInt():
return int(input())
def getStr():
return input().strip()
def getList(split=True):
s = getStr()
if split:
s = s.split()
return map(int, s)
t = 1
M = 998244353
def solve():
n = getInt()
dp = [0] * (n+1)
dp[0] = 1
for i in range(2, 2*n+1, 2):
for j in range(i, 2*n+1, i):
dp[j//2] += 1
c = 0
for i in range(1, n+1):
dp[i] += c
dp[i] %= M
c += dp[i]
c %= M
print(dp[-1])
for _ in range(t):
solve()
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
using ll = long long;
using P = pair<ll, ll>;
void solve() {
int n;cin>>n;
vector<int> dp(n+1);
int sum = 1;
dp[0] = 1;
int mod = 998244353;
for(int i = 1;i<=n;i++){
for(int j = 2*i;j<=n;j+=i){
dp[j] ++;
}
}
for(int i = 1;i<=n;i++){
dp[i] += sum;
dp[i] %= mod;
sum += dp[i];
sum %= mod;
}
cout << dp[n] << endl;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// int t;cin >> t;while (t--)
solve();
return 0;
}
1519A - Red and Blue Beans | 466A - Cheap Travel |
659E - New Reform | 1385B - Restore the Permutation by Merger |
706A - Beru-taxi | 686A - Free Ice Cream |
1358D - The Best Vacation | 1620B - Triangles on a Rectangle |
999C - Alphabetic Removals | 1634C - OKEA |
1368C - Even Picture | 1505F - Math |
1473A - Replacing Elements | 959A - Mahmoud and Ehab and the even-odd game |
78B - Easter Eggs | 1455B - Jumps |
1225C - p-binary | 1525D - Armchairs |
1257A - Two Rival Students | 1415A - Prison Break |
1271A - Suits | 259B - Little Elephant and Magic Square |
1389A - LCM Problem | 778A - String Game |
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |